package com.galaxy.product.api;

import com.galaxy.common.core.domain.R;
import com.galaxy.common.core.utils.MapstructUtils;
import com.galaxy.common.mybatis.core.page.PageQuery;
import com.galaxy.common.mybatis.core.page.TableDataInfo;
import com.galaxy.product.domain.Product;
import com.galaxy.product.domain.ProductDetail;
import com.galaxy.product.domain.bo.ProductBo;
import com.galaxy.product.domain.vo.ProductDetailVo;
import com.galaxy.product.domain.vo.ProductVo;
import com.galaxy.product.service.IProductDetailService;
import com.galaxy.product.service.IProductService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * 商品API接口
 */
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/product")
public class ProductApi {

    private final IProductService productService;


    /**
     * 获取商品列表
     *
     * @param bo 查询参数
     * @param pageQuery 分页参数
     * @return 商品列表
     */
    @GetMapping("/list")
    public TableDataInfo<ProductVo> list(ProductBo bo, PageQuery pageQuery) {
        return productService.queryPageDetailList(bo, pageQuery);
    }

    /**
     * 获取商品详情
     *
     * @param id 商品ID
     * @return 商品详情
     */
    @GetMapping("/{id}")
    public R<ProductVo> getInfo(@PathVariable Long id) {
        ProductBo bo = new ProductBo();
        bo.setId(id);
        ProductVo productVo = productService.queryPageDetailInfo(bo);
        return R.ok(productVo);
    }

    @PutMapping("/updateSales/{productId}/{number}")
    public R<Boolean> updateSales(@PathVariable("productId") Long productId,@PathVariable("number")Integer number) {
        return R.ok(productService.updateSales(productId, number));
    }
}
